<?php
/**
 * User: LRZ
 * Date: 2020/1/16
 * Time: 17:07
 */

/**
 *  905.按奇偶排序数组
 *
 *  标签：数组
 *
 *  给定一个非负整数数组 A，返回一个数组，在该数组中， A 的所有偶数元素之后跟着所有奇数元素。
 *  你可以返回满足此条件的任何数组作为答案。
 *
 *  示例：
 *      输入：[3,1,2,4]
 *      输出：[2,4,3,1]
 *      输出 [4,2,3,1]，[2,4,1,3] 和 [4,2,1,3] 也会被接受。
 *   
 *  提示：
 *      1 <= A.length <= 5000
 *      0 <= A[i] <= 5000
 *
 *  来源：力扣（LeetCode）
 *  链接：https://leetcode-cn.com/problems/sort-array-by-parity
 *  著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */

$start = microtime(true);

$A   = [3,1,2,4];
$res = sortArrayByParity($A);

$end = microtime(true);
print_r($res);
printf(' total run: %.2f s<br>' . 'memory usage: %.2f M<br> ', $end - $start, memory_get_usage() / 1024 / 1024);

function sortArrayByParity($A)
{
    $p1  = 0;
    $p2  = count($A) - 1;
    $res = [];
    foreach ($A as $k => $v) {
        if ($v % 2 === 0) {
            $res[$p1] = $v;
            $p1++;
        }
        if ($v % 2 === 1) {
            $res[$p2] = $v;
            $p2--;
        }
    }
    ksort($res);
    return $res;
}